import { BagFunc } from './types';
import * as fs from 'fs';
import * as path from 'path';

// 自动导入所有 bagFunc 文件
const bagFuncs: Record<string, BagFunc> = {};

// 获取当前目录
const currentDir = __dirname;

// 读取当前目录中的所有 .ts 和 .js 文件
const files = fs.readdirSync(currentDir);

// 遍历文件并自动导入
for (const file of files) {
    // 跳过 index.ts 和 types.ts
    if (file === 'index.ts' || file === 'types.ts') {
        continue;
    }
    
    // 处理 .ts 和 .js 文件
    if (file.endsWith('.ts') || file.endsWith('.js')) {
        // 获取文件名（去掉 .ts 或 .js 扩展名）
        const funcName = file.replace(/\.(ts|js)$/, '');
        
        try {
            // 动态导入文件
            const module = require(`./${funcName}`);
            
            // 获取默认导出或第一个导出
            const func = module.default || module[funcName] || Object.values(module)[0];
            
            if (typeof func === 'function') {
                bagFuncs[funcName] = func;
                console.log(`✅ 自动导入 bagFunc: ${funcName}`);
            } else {
                console.warn(`⚠️ 跳过 ${funcName}: 未找到有效的函数导出`);
            }
        } catch (error) {
            console.error(`❌ 导入 ${funcName} 失败:`, error);
        }
    }
}

// 导出所有 bagFunc 函数
export { bagFuncs };

// 导出类型定义
export type BagFuncName = keyof typeof bagFuncs;

// 重新导出类型
export * from './types'; 